7
Common Dialog Box
Поговорим о том, как трудно делать хорошие программы. Даже не трудно, а утомительно, так как постоянно надо делать одну и ту же рутинную работу: переименовывать кнопки, прописывать процедуры, тестировать приложение на работоспособность и пр. Как облегчить наш труд? Грубо говоря - никак, т.к. то, как мы расположим на форме(ах) некоторые стандартные элементы и пропишем их взаимодействие друг с другом - это и есть программирование. Но… Разработку некоторых стандартных элементов (узлов) наших программ действительно можно автоматизировать.
Стандартным действием для большинства программ является работа с файлами. См. лекцию № 8 "Файлы". Мы неоднократно видели, что при открытии, сохранении файлов в приложения Windows возникает этакое стандартное окно.
В этом окне пользователь может: 1) ввести имя сохраняемого файла; 2) выбрать тип файла; 3) выбрать папку (каталог); 4) создать новую папку (каталог); 5) видеть уже сохраненные файлы выбранного типа в каталоге в разных видах (таблица, список); 6) сохранить файл; 7) не сохранить файл и отметить все действия. Вот как много должна уметь стандартная программа при сохранении файла. И что же, каждый раз при написании простой программы (в которой есть работа с файлами) необходимо программировать столько действий и возможностей? В том то и дело, что нет…
Для создания стандартный диалоговых окон предназначен специальный элемент управления - Common Dialog Box. Он позволяет создавать, выводить и принимать данные стандартный окон:
1) открытия файла,
2) сохранения файла,
3) выбор цвета,
4) выбор шрифта,
5) печать документа,
6) просмотр справки.
Common Dialog Box не входит в набор стандартных элементов Visual Basic, поэтому для того, чтобы мы могли с ним работать, его необходимо подключить. Для этого надо: 1) выбрать пункт меню Project | Components; 2) установить флажок напротив пункта Microsot Common Dialog Control 6.0 (SP3); 3) нажать "ОК".
Свойства элемента Common Dialog Box: 1. Name - имя элемента.
2. About - информация о авторских правах.
3. Custom - сложное свойство, состоящее из множества пунктов, в которых программист задает некоторые начальные данные о стандартных окнах: заголовок окна, имя файла по умолчанию, директория по умолчанию, "фильтр" и пр.
Методы элемента Common Dialog Box: 1. ShowColor - вывод окна вывода цвета.
2. ShowFont - вывод окна выбора шрифта.
3. ShowHelp - вывод окна справки.
4. ShowOpen - вывод окна открытия файла.
5. ShowSave - вывод окна сохранения файла.
6. ShowPrinter - вывод окна печати.
Чтобы у вас не создалось впечатления, что вы ничего не понимаете, и для того, чтобы показать насколько прост и гибок язык VB, мы разберем очень простой пример. Он взят мною из книги С. Симоновича и Г. Евсеева "Занимательное программирование: Visual Basic", т.к. он очень оригинальный и показательный. (Это единственный случай в данной книге, когда я воспользовался "чужим" примером!)
Большой пример. Пусть требуется создать программу, способную показывать разнообразные рисунки одного формата на своей форме. Смена рисунков должна осуществляться максимально просто - например, выбор того или иного рисунка может происходить после кликанья мышью на предыдущем рисунке. Нам не так важен, какой именно формат будет у рисунков и что на них будет изображено, как важен способ, которым это будет достигнуто.
Для того, чтобы поместить на форму рисунок, необходимо воспользоваться элементом Image (рисунок, изображение). Более подробно об этом элементе (а также о его "коллеге" - элементе PictureBox) мы поговорим позже, в работе №9 "Графика". Пока нас интересует только тот факт, что элемент Image может показывать рисунки в различных форматах. Итак, нам необходимо:
1) поместить на форму элемент Image;
2) настроить свойство Picture элемента Image на любой файл формата ".jpg";
3) поместить на форму элемент Common Dialog Box;
4) настроить свойство Custom элемента CommonDialog.
Свойство Custom элемента CommonDialog состоит из множества параметров. Они определяют разные начальные значения (параметры, имена и пр.) элементов окон открытия (сохранения) файлов, окна выбора цвета, шрифта, справки, печати). Для нашей программы необходимо настроить параметры только одного окна - Open / Save as ("Открыть", "Сохранить как") - и сделать это так, как указано на рисунке:
Замечание. Тем из вас, кто имеет персональный компьютер и работает на нем достаточно долго, ничего объяснять не нужно. Однако, для тех, кто далек от ЭВМ, приведенная выше картинка требует пояснения:
1) DialogTitle (заголовок строки окна открытия файла) мы решили сделать таким "Выбор картинки". Этот параметр свойства Custom можно было и не описывать, но мы сделали это для красоты и большей "русскоязычности" нашей программы.
2) FileName (имя файла по умолчанию) мы не указали, т.к. нам неизвестно какие файлы будут у пользователя нашей программы. Хотя, если мы поместим в каталог с нашей программой какой-нибудь jpeg'овский файл, то вполне можно указать его имя.
3) InitDir (директория с картинками) по таким же причинам не указана.
4) Filter (фильтр) является весьма важным свойством (параметром), т.к. в нем указывается, какие именно файлы может показывать (и открывать) элемент CommonDialog. Обратите внимание на формат записи фильтра:
Формат jpeg (*.jpg) | *.jpg 5) Последнее свойство, которое нам надо установить - Flags (флаги). В данном случае флаги служат для разрешения конфликтов, которые могут возникнуть: так, например, флаг "4" указывает на то, что графический файл необходимо открыть только "для чтения"; флаг "4096" указывает на то, что программа не должна пытаться открыть несуществующий файл (имя которого может попытаться ввести пользователь). Так как флагов, которые нам нужны более одного (точнее, два - 4 и 4096), то в параметр Flags надо ввести их сумму, т.е. 4100.
В данной работе вам многому придется верить "на слово", поэтому посмотрите на то, какой должен быть код программы. Он состоит из одной процедуры Image1_Click() (если кликнули мышью на рисунке) и состоит из двух операторов: первый выводит на экран диалоговое окно открытия графического файла (только тех из них, который имеют расширение .jpg), а второй загружает вместо старого рисунка элемента Image1 новый, равный тому, который выбрал пользователь.
Private Sub Image1_Click() CommonDialog1.ShowOpen Image1.Picture=LoadPicture(CommonDialog1.filename) End Sub
Нам совершенно неинтересно, что: сейчас мы двумя строчками кода(!) сделали этакий небольшой view'ер ("вьювер" - просмотрщик), который позволяет просматривать небольшие графические файлы формата jpg. Это демонстрирует огромную мощь VB?
Задания по лабораторной работе 7
1. Прочитать и законспектировать работу, проверить пример.
2. Разобрать два дополнительных примера (только для тех, у кого есть пособие и дискета с дополнительными примерами).
3. Выбрать любое отчетное задание: "создать программу, в которой..."
1 пользователь вводит строку текста и имеет возможность менять ее цвет, т.е. на экране присутствуют (как минимум) текстовое окно и командная кнопка "Выбор цвета"; 2 пользователь вводит строку текста и имеет возможность сохранить ее в файл, т.е. на экране присутствуют (как минимум) текстовое окно и командная кнопка "Сохранить строку"; 3 пользователь имеет возможность открывать текстовые файлы и помещать их в текстовое окно (со свойством Multiline=True), т.е. на экране присутствуют как минимум текстовое окно и командная кнопка "Открыть файл"; 4 пользователь имеет возможность просматривать графические файлы форматов .bmp, .jpg, .gif. 5*** Сделать программу, которая является маленьким текстовым редактором. В ней должно быть текстовое поле и возможность: открыть, сохранить файл, создать новый файл, найти строку, найти и заменить одну строку на другую.